Integration Guide ABB (IRC5) LS

Note: Read the Robot communication overview before you read this integration guide.

Note 2: Use the latest version of this integration guide. It is included in the latest version of the Robot module. You can download the Robot module from the official Photoneo website.

This guide describes the Locator Studio (LS) Robot module LS 1.5.0 for ABB robots with the IRC5 controller. For the OmniCore controller, see Integration Guide ABB (OmniCore) LS.

Contents

1 Prerequisites

  • IRC5 robot controller with RobotWare 5.13 or higher (RobotWare 5.x and 6.x). The module was developed and tested on RobotWare 6.08.02.

  • Option (616-1) PC Interface - provides the RAPID socket instructions used by the module.

  • RobotStudio for installation. Version 2025.4 or higher is recommended.

The LS module has no Robot State Server. It runs in one normal motion task (T_ROB1), so the (623-1) Multitasking option is not needed.

To check that the option is installed, go to System Info -> System Properties -> Control Module -> Options:

RobotWare version and installed options on the FlexPendant

2 Robot controller setup

2.1 Controller configuration

2.1.1 Network configuration

Recommended use of the IRC5 Ethernet ports:

  • WAN port - connection to the Photoneo vision controller.

  • Service port - connection to the PC with RobotStudio. The service port has the fixed address 192.168.125.1 and runs a DHCP server, so do not connect it to a plant network.

Service and WAN ports of the IRC5 controller

Note: The procedure below is for RobotWare 6 and higher. RobotWare 5 uses a different procedure to set the IP address. See the ABB documentation for your RobotWare version.

Turn on the IRC5 controller and wait for the start screen. Open the Menu and select Control Panel:

ABB pendant menu RW6

In the Control Panel, select Controller Settings:

ABB pendant control panel

Select Settings and choose Network:

ABB pendant network

Use the keypad to set the IP address and subnet mask of the WAN port:

ABB pendant IP setup

Confirm with OK and restart the controller to apply the new settings:

ABB pendant restart

The robot controller and the vision controller must be in the same subnet. For example:

  • Vision controller: 192.168.1.1 / 24

  • Robot controller (WAN): 192.168.1.2 / 24

Enter the robot controller IP address on the Network page of the vision controller. Click Test connection to ping the robot controller.

Robot interface settings on the Network page of the vision controller

2.1.2 Tool setup

The example programs use the tool pho_tool. Each example program declares it as TASK PERS tooldata. Set pho_tool to match your gripper before you teach any poses. Open Jogging -> Tool, select pho_tool and use Edit -> Change Value.

Changing the value of pho_tool on the FlexPendant

Rules for frames:

  • Object poses are robtarget values in the robot base frame. Pick them with the real tool (for example pho_tool) and wobj0.

  • Poses sent to the vision controller (calibration points, hand-eye scan poses) must be the flange pose (tool0) in wobj0.

2.2 Robot module installation

2.2.1 Loading the Robot module files

The Robot module is delivered as Photoneo_LS_Module_1_5_0.zip. It contains these files:

File

Purpose

rapid/PHO_LS_BASE.sys

System module with the communication driver and the robotic API. Required. Do not edit.

rapid/example_programs/PHO_LS_*.mod

12 example program modules - see Example programs. Optional.

Copy the files to the controller with a USB stick or with RobotStudio:

  1. Set the PC to DHCP, connect it to the Service port and start RobotStudio.

  2. On the Controller tab select One Click Connect (or Add Controller) and log in as Default User.

    image7

  3. On the Controller tab, open File Transfer. Create a folder on the controller, for example HOME:/Photoneo_LS_1_5/. Copy PHO_LS_BASE.sys and the example programs that you need into this folder.

Copying the module files with the RobotStudio File Transfer tool

2.2.2 Loading the modules into the T_ROB1 task

In RobotStudio, click Request write access. Right-click the T_ROB1 task and select Load Module from Controller. Select these modules:

  • PHO_LS_BASE.sys

  • one main program, for example PHO_LS_Basic.mod

  • a calibration program (optional), for example PHO_LS_Calibration_Basic.mod

Loading the modules into the T_ROB1 task

Load only one main program at a time. Every main program declares its own main routine and the variables pho_tool, home_pose, start_pose and vision_system_id. Two main programs in the same task cause a name conflict. The calibration programs have no main routine. Their entry routine is calibration_main. They use pho_tool and vision_system_id of the loaded main program (PHO_LS_Calibration_Basic.mod also uses home_pose).

After you load the modules, the RAPID tree looks like this:

T_ROB1 task with PHO_LS_BASE, PHO_LS_Basic and PHO_LS_Calibration_Basic

Tip: To keep the system module loaded after a RAPID reset, add PHO_LS_BASE.sys to Configuration -> Controller -> Automatic Loading of Modules (File: path to PHO_LS_BASE.sys, Task: T_ROB1).

3 Robot module

All Photoneo routines, variables and constants are declared in PHO_LS_BASE.sys. The module is NOSTEPIN and VIEWONLY. Do not edit it. Your robot program only calls the routines described below.

3.1 Robotic API

Most requests exist in two forms:

  • A procedure (PROC), for example pho_get_objects. It stores the error code in the global variable PHO_ERR_CODE. The example programs use this form.

  • A function (FUNC num), for example pho_request_get_objects. It returns the error code.

Both forms do the same thing. 0 (PHO_NO_ERR) means success. For the other codes, see Error codes defined by the module.

3.1.1 Connection procedures

Function

Description

FUNC num pho_wait_for_server(
string server_ip,
\num port_number,
\num wait_time)

Opens the TCP connection to the Action Request Server on the vision controller and sends the brand ID. If a connection is already open, the function closes it first. This means that you can also use it to reconnect.

server_ip - IP address of the vision controller.

port_number - optional, default 11003. Leave it out.

wait_time - optional connection timeout in seconds, default 3600.

Returns: 0 on success, 5 (PHO_TIMEOUT) on timeout, 3 (PHO_COM_FAILURE) if the socket was closed.

Call it once at the start of the program. You can send requests only after the connection is established.

status := pho_wait_for_server("192.168.1.1", \wait_time:=20);

3.1.2 Communication procedures

For a description of what each request does on the vision controller, see Action requests.

Locator requests

Request

ID

Procedure / function

Inputs

Outputs

Scan

19

PROC pho_request_scan

num vision_system_id, \robtarget pose

none - the response is read by Wait for scan completion

Trigger scan

30

PROC pho_trigger_scan

num vision_system_id, \robtarget pose

none - the response is read by the next request or by Wait for scan completion

Localize on the last scan

31

PROC pho_reuse_scan

num vision_system_id, \robtarget pose

none - the response is read by Wait for scan completion

Get objects

20

PROC pho_get_objects
FUNC pho_request_get_objects

num vision_system_id, num num_of_req_objects, INOUT robtarget results{*}, INOUT num num_of_results

results{*}, num_of_results, Info data 4-9

Get objects - all objects

20

PROC pho_get_all_objects
FUNC pho_request_get_all_objects

num vision_system_id, INOUT robtarget results{*}, INOUT num num_of_results

results{*}, num_of_results, Info data 4-9

Get objects - one object

20

PROC pho_get_single_object
FUNC pho_request_get_single_object

num vision_system_id, INOUT robtarget result

result, Info data 4-9

Get vision system status

22

PROC pho_get_vs_status
FUNC pho_request_get_vs_status

num vision_system_id

pho_num_localized, pho_num_ready, pho_process_state

Change bounding box

33

PROC pho_change_bbox
FUNC pho_request_change_bbox

num vision_system_id, num bbox_id

error code only

\robtarget pose is optional. Send it only for a hand-eye (robot-mounted) vision system. It is the flange pose (tool0, wobj0) at which the scan is taken. For hand-eye multiview, pho_reuse_scan needs the pose of the first scan in the sequence.

Set num_of_req_objects = 0 to request all objects. The results array must be large enough for all returned objects (the module can store up to 100).

Calibration requests

Request

ID

Procedure / function

Inputs

Outputs

Add calibration point

5

PROC pho_calib_add_point
FUNC pho_request_calib_add_point

robtarget pose (flange pose, tool0)

error code only

Start automatic calibration

25

PROC pho_calib_start
FUNC pho_request_calib_start

num solution_id, num vision_system_id

error code only

Save automatic calibration result

27

PROC pho_calib_save
FUNC pho_request_calib_save

none

pho_calib_acc, pho_camera_pose

Stop automatic calibration

26

PROC pho_calib_stop
FUNC pho_request_calib_stop

none

error code only

Solution requests

Request

ID

Procedure / function

Inputs

Outputs

Change solution

9

PROC pho_change_solution
FUNC pho_request_change_solution

num solution_id

error code only

Start solution

10

PROC pho_start_solution
FUNC pho_request_solution_start

num solution_id

error code only

Stop solution

11

PROC pho_stop_solution
FUNC pho_request_solution_stop

none

error code only

Get running solution

12

FUNC pho_request_get_running_sol

none

current_solution_id

Other requests

Request

ID

Procedure / function

Inputs

Outputs

Communication check

100

PROC pho_comm_check
FUNC pho_request_comm_check

none

error code only

Examples:

! Procedure form - error code in PHO_ERR_CODE
pho_get_all_objects vision_system_id, targets, num_of_targets;
IF PHO_ERR_CODE <> PHO_NO_ERR THEN
    ...
ENDIF

! Function form - error code returned
status := pho_request_change_bbox(1, 2);

3.1.3 Response receiving procedures

The Scan, Trigger scan and Localize on the last scan requests only send the request. With a hand-eye sensor, keep the robot still until the scan response arrives. With an extrinsic sensor, the robot can move in the meantime if it stays out of the scanned scene. The only exception is dynamic MultiView, where the sensor scans while the robot moves. To read the response, use:

Procedure / function

Description

PROC pho_wait_for_scan_completion(\num wait_time)
FUNC num pho_request_wait_for_scan(\num wait_time)

Wait for scan completion. Waits for the response to the last scan request. wait_time - optional timeout in seconds, default 3600. The procedure stores the error code in PHO_ERR_CODE. The function returns it. If no scan request is pending, the function returns -1 and writes an event log message.

The next request also reads the response to a Trigger scan request automatically. This means that you can send several Trigger scan requests in a row (see PHO_LS_Multiview_Static.mod).

3.1.4 Auxiliary functions

Function

Description

FUNC robtarget pho_get_approach(robtarget target, num offset_z)

Returns target shifted by offset_z mm along the base Z axis (Offs(target, 0, 0, offset_z)). Use it for approach and retreat poses.

FUNC string pho_err_info(num msg)

Returns a short text for an error code, for example "VISION SYSTEM NOT FOUND". It is useful in TPWrite and ErrLog.

3.1.5 Info data

Some responses contain extra values, called Info data. The module stores them in these PERS variables:

Key

Info data

Variable

Unit in robot

4

Dimension X

pho_dimensions_x{n}

mm

5

Dimension Y

pho_dimensions_y{n}

mm

6

Rotation Z

pho_dimensions_rot{n}

deg (converted from mrad)

7

Neural network label

pho_nn_label

integer

8

Max Z height

pho_max_height

mm

9

Tilt

pho_angle

deg (converted from mrad)

10

Calibration accuracy

pho_calib_acc

µm

11

Running solution ID

current_solution_id

integer

12

Number of localized objects

pho_num_localized

integer

13

Number of ready objects

pho_num_ready

integer

14

Processing state

pho_process_state

0 / 1

{n} is the index of the object in the results array of the Get objects request. pho_nn_label, pho_max_height and pho_angle are single values. They hold the value of the last object in the response. The vision controller sends the values only if the solution provides them. Read them only after the request returns 0.

3.1.6 Variables used by the module

In addition to the Info data variables above, PHO_LS_BASE.sys declares:

Variable / constant

Meaning

PERS num PHO_ERR_CODE

Error code of the last request called in procedure form.

PERS robtarget pho_camera_pose

Calibration result (camera pose) received from the Save automatic calibration result request.

CONST num ..._REQ

Request IDs: CALIB_ADD_POINT_REQ (5), CHANGE_SOLUTION_REQ (9), START_SOLUTION_REQ (10), STOP_SOLUTION_REQ (11), GET_RUNNING_SOL_REQ (12), SCAN_REQ (19), GET_OBJECTS_REQ (20), GET_VS_STATUS_REQ (22), CALIB_START_REQ (25), CALIB_STOP_REQ (26), CALIB_SAVE_REQ (27), TRIGGER_SCAN_REQ (30), REUSE_SCAN_REQ (31), CHANGE_BBOX_REQ (33), COMM_CHECK_REQ (100).

The example programs declare pho_tool (TASK PERS tooldata), home_pose, start_pose and vision_system_id themselves.

3.1.7 Error codes defined by the module

Use these constants instead of numbers. For descriptions and troubleshooting, see Error codes.

Constant

Value

Meaning

PHO_NO_ERR

0

No error

PHO_UNKNOWN_REQ

2

Unknown request

PHO_COM_FAILURE

3

Communication error

PHO_BAD_DATA

4

Bad data

PHO_TIMEOUT

5

Timeout

PHO_INVALID_SOL

450

Invalid solution ID

PHO_ANOTHER_SOL

451

Another solution running

PHO_SOL_START_ERR

452

Deployment not started

PHO_SOL_NOT_RUN

453

Deployment is not running

PHO_SOL_STOP_ERR

454

Deployment did not stop

PHO_SOL_INCOMPLETE

455

Solution is not complete

PHO_INVALID_BRAND

457

Invalid robot brand

PHO_SOL_RUNNING

458

Solution already running

PHO_SOL_FORBIDDEN

459

Solution access unauthorized

PHO_INVALID_VS

460

Invalid vision system ID

PHO_CALIB_RUNNING

461

Calibration already running

PHO_CALIB_NOT_RUNNING

462

Calibration not running

PHO_CALIB_STOP_ERR

463

Calibration did not stop

PHO_CALIB_START_ERR

464

Calibration did not start

PHO_CALIB_DISABLED

465

Automatic calibration disabled

PHO_CALIB_NOT_ENOUGH_POINTS

466

Not enough calibration points

PHO_CALIB_NOT_ENOUGH_ANGLES

467

Calibration accuracy is above the threshold

PHO_SCANNER_NOT_AVAILABLE

468

Scanner not available

PHO_CALIB_FORBIDDEN

469

Calibration forbidden

PHO_VS_NOT_FOUND

500

Vision system not found

PHO_EMPTY_SCENE

501

Empty scene

PHO_NO_OBJ_RUN

502

No object found, detection still running

PHO_NO_OBJ_STOP

503

No object found, detection stopped

PHO_REJECT_RUN

504

All objects rejected, detection still running

PHO_REJECT_STOP

505

All objects rejected, detection stopped

The module passes other codes from the vision controller through as numbers (for example 506-511 or calibration point errors 100-134).

3.2 Example programs

All example programs are in rapid/example_programs. Each one connects to the vision controller at 192.168.1.1. Change the IP address in the pho_wait_for_server call. All robot poses are set to an unreachable value ([99999, 99999, 99999]). Teach them before the first run.

Example program

Purpose

PHO_LS_Basic.mod

Basic workflow: scan, get all objects, pick them in a loop, scan again.

PHO_LS_Hand_Eye.mod

Same as Basic, for a robot-mounted scanner. Sends the scan pose with the Scan request.

PHO_LS_Calibration_Basic.mod

Calibration with 9 taught poses; starts, saves and stops automatic calibration (calibration_main).

PHO_LS_Calibration_Expert.mod

Calibration with 9 poses in an array. Checks that all poses were taught and limits acceleration. Automatic calibration is off by default (calibration_main).

PHO_LS_Change_BBox.mod

Same as Basic, but switches between bounding box 1 and 2 after each cycle.

PHO_LS_Change_Solution.mod

Same as Basic, but switches between solution 1 and 2 after each cycle.

PHO_LS_Get_Status.mod

Same as Basic, but reads the vision system status (localized / ready objects) while the scan is running.

PHO_LS_Multiple_Vision_Systems.mod

Same as Basic, but alternates between vision system 1 and 2.

PHO_LS_Reuse_Scan.mod

Scans with vision system 1, then localizes again on the same scan with vision system 2 (pho_reuse_scan).

PHO_LS_Multiview_Static.mod

Hand-eye multiview: stops at 3 poses and sends a Trigger scan request at each pose. Then starts localization with a Scan request.

PHO_LS_Multiview_Dynamic.mod

Hand-eye multiview while moving (MotionCam-3D): a timer interrupt (TRAP DynamicScan_Timer) sends Trigger scan requests during the motion p1-p4. An odometer variant (TRAP DynamicScan_Odometer) is included.

PHO_LS_Comm_Check.mod

Sends Communication check requests in a loop and reconnects on failure. The robot moves only to the home pose.

3.2.1 Main program example

In PHO_LS_Basic.mod, the robot:

  • connects to the vision controller,

  • moves to home_pose (out of the scanner view) and sends the Scan request,

  • waits for the scan and requests all object poses,

  • scans again on error 502 / 503 / 504 / 505, and stops with an event log message on any other error,

  • picks every object: approach 50 mm above the object, linear move to the object, gripper command (to be added), retreat, placing (to be added),

  • scans again.

MODULE PHO_LS_Basic

    ! Copyright (c) 2026 Zebra Technologies s.r.o.
    ! All rights reserved
    ! Description: Locator example with requesting all objects at once
    ! RobotWare version 5.x-7.x

    ! ==============================================================================
    !                                 LOCATOR BASIC
    ! ==============================================================================
    ! This is a basic locator template.
    ! Program requests all localized objects and then picks them in a loop.
    ! User is expected to reteach home and start positions,
    ! and set IP Address of Vision Controller.
    ! ==============================================================================

    !ToolData
    TASK PERS tooldata pho_tool := [TRUE, [[0, 0, 0], [1, 0, 0, 0]], [0, [0, 0, 0], [1, 0, 0, 0], 0, 0, 0]];

    ! Reteach home and start position for your application
    VAR robtarget home_pose := [[99999.0, 99999.0, 99999.0], [1, 0, 0, 0], [0, 0, 0, 0], [9E+09, 9E+09, 9E+09, 9E+09, 9E+09, 9E+09]];
    VAR robtarget start_pose := [[99999.0, 99999.0, 99999.0], [1, 0, 0, 0], [0, 0, 0, 0], [9E+09, 9E+09, 9E+09, 9E+09, 9E+09, 9E+09]];

    ! Vision system ID variable
    VAR num vision_system_id := 1;

    ! =========================== MAIN PROGRAM =====================================
    PROC main()
        VAR robtarget targets{100};
        VAR num num_of_targets;
        VAR num i;
        VAR num status;

        ! Initialize all targets to unreachable position (Safety measure)
        FOR i FROM 1 TO 100 STEP 1 DO
            targets{i} := [[99999.0, 99999.0, 99999.0], [1, 0, 0, 0], [0, 0, 0, 0], [9E+09, 9E+09, 9E+09, 9E+09, 9E+09, 9E+09]];
        ENDFOR

        ! Set acceleration
        AccSet 20,20;

        ! Connect to Photoneo Vision Controller, change Vision Controller IP address here if needed
        TPWrite "Connecting to Vision Controller...";
        status := pho_wait_for_server("192.168.1.1", \wait_time:=20);
        IF(status <> PHO_NO_ERR) THEN
           TPWrite "Could not connect to Vision Controller";
        ELSE
            TPWrite "Connected to Vision Controller";
        ENDIF

scan_again:
        ! Move robot away from scanning area - reteach this position for your robot and workcell
        MoveJ home_pose, v500, fine, pho_tool;

        ! When robot is away from scanning area, trigger first scan and localization
        pho_request_scan vision_system_id;

        ! ==================== MAIN LOOP ===========================================
        ! Wait until scanning is completed
        pho_wait_for_scan_completion;

        ! Handle errors if occured
        IF (PHO_ERR_CODE <> PHO_NO_ERR) THEN
            ErrLog 4800, "Scan Request Error", "Terminating program", "Check Locator Studio Console", "Error code : " + NumToStr(PHO_ERR_CODE, 0), " ";
            EXIT;
        ENDIF

        ! If Scan OK, request object poses
        pho_get_all_objects vision_system_id, targets, num_of_targets;     !Request all object poses
        !pho_get_objects vision_system_id, 1, targets, num_of_targets;      !Request specified num of objects (1 here)

        ! Check errors, rescan if needed
        IF (PHO_ERR_CODE = PHO_NO_OBJ_RUN OR PHO_ERR_CODE = PHO_REJECT_RUN) THEN
            TPWrite "No object found yet, but localization is still running";
            GOTO scan_again;
        ELSEIF (PHO_ERR_CODE = PHO_NO_OBJ_STOP) THEN
            TPWrite "No object found, but localization finished";
            GOTO scan_again;
        ELSEIF (PHO_ERR_CODE = PHO_REJECT_STOP) THEN
            TPWrite "Objects are rejected by constraints";
            GOTO scan_again;
        ELSEIF (PHO_ERR_CODE <> PHO_NO_ERR) THEN
            ErrLog 4800, "Locator Studio Error", "Terminating program", "Get object pose request returned an error", "Error code : " + NumToStr(PHO_ERR_CODE, 0), " ";
            EXIT;
        ENDIF

        ! If no error, print output and proceed to picking
        TPWrite "Localized " + NumToStr(num_of_targets, 0) + " objects";

        ! Move to start_pose
        MoveJ start_pose, v100, z30, pho_tool;

        ! Pick all targets using regular MoveL commands with received targets + approach and deapproach offsets
        FOR i FROM 1 TO num_of_targets STEP 1 DO
            MoveJ Offs(targets{i}, 0, 0, 50), v100, z10, pho_tool;
            MoveL targets{i}, v100, fine, pho_tool;
            ! Add gripper command here
            !SetDO magnet, 1;
            MoveL Offs(targets{i}, 0, 0, 50), v100, z10, pho_tool;
            ! Add placing here
            MoveJ start_pose, v100, z30, pho_tool;
        ENDFOR

        ! Repeat the loop
        GOTO scan_again;
    ENDPROC
ENDMODULE

3.2.2 Calibration example

PHO_LS_Calibration_Basic.mod (entry routine calibration_main) runs the robot-side part of a calibration with 9 poses. LS supports sphere calibration (static scanner) and marker pattern calibration (hand-eye scanner). Both need 9 poses with enough variation in orientation.

Before the first run:

  • Load it together with a main program. It uses pho_tool, home_pose and vision_system_id from the main program.

  • Teach calib_pose_1 … calib_pose_9. Check that the moves between them are collision-free.

  • Set solution_id and vision_system_id (default 1).

  • Set auto_calibration (default TRUE). With the default value, the program starts, saves and stops the calibration itself. With FALSE, start the calibration in LS first and save it there.

Sequence:

  1. pho_wait_for_server - connects to the vision controller.

  2. pho_calib_start solution_id, vision_system_id - starts automatic calibration.

  3. For each pose: MoveJ calib_pose_n, wait wait_before_scan (1 s), pho_calib_add_point CRobT(\Tool:=tool0) (the flange pose).

  4. pho_calib_save - saves the result. The accuracy is stored in pho_calib_acc (µm), the camera pose in pho_camera_pose.

  5. pho_calib_stop - stops automatic calibration.

Note: The pose sent with pho_calib_add_point must be the flange pose (tool0, wobj0). If you use other tool or work object data, the calibration result is wrong.

PHO_LS_Calibration_Expert.mod does the same with the poses in the array calib_poses{9}. It does not run if a pose still has the default value. It limits acceleration with WorldAccLim, and auto_calibration is FALSE by default.

A typical calibration error is below 3 mm. Check the result on the Verification tab in LS. The point cloud must fit the robot model. Common causes of bad results are wrong tool data, a wrong robot model and encoder offsets.

3.3 Error handling

Check the error code (PHO_ERR_CODE or the returned value) after every request and after Wait for scan completion. Codes 502-505 are normal results of the Get objects request (nothing to pick yet, or nothing to pick at all). The example programs simply scan again.

How the module handles communication problems:

  • Socket not connected or closed by the vision controller - the request returns PHO_COM_FAILURE (3).

  • No response within the timeout - the request returns PHO_TIMEOUT (5). The default timeout is 3600 s.

  • Response does not match the request, or has an unknown message type - the module writes event log message 4800 “Photoneo Internal Error” and stops the program (EXIT). Contact support.

  • Wait for scan completion called without a pending scan - event log message 4800, return value -1.

To recover from error 3 or 5, call pho_wait_for_server again. It closes the old socket and reconnects (see PHO_LS_Comm_Check.mod). If the connection is refused, check that the solution is deployed and that the IP addresses match.

4 Running the Main program example

4.1 Prerequisites

  • The LS solution is configured and the vision system is calibrated.

  • The controller is set up as described in Robot controller setup.

  • The vision controller IP address is set in pho_wait_for_server.

  • Gripper and placing commands are added to the program (optional for a first dry run).

4.2 Reteach the robot poses

PHO_LS_Basic.mod uses two poses:

  • home_pose - the robot requests the scan at this pose. For a static scanner, the robot must not block the scanner view. For a hand-eye scanner, use PHO_LS_Hand_Eye.mod and teach scanning_pose instead.

  • start_pose - usually above the middle of the bin or scanning area. The robot passes through it before and after each pick.

To teach a pose, open Program Data and show the robtarget data in the scope of the module. Jog the robot to the pose, select the variable and press Modify Position. Other example programs have extra poses (for example p1 … p4 in the multiview examples). Teach them the same way.

4.3 Runtime

Deploy your solution. On the Deployment page, the Action Request Client status is DISCONNECTED.

Open Production Window and Set PP to Main:

Robot Studio PP to main png 4avm4

Select AUTO or MANUAL mode and reduce the speed:

Robot Studio Speed u7MCV

Press Play (AUTO) or Enable + Play (MANUAL). The FlexPendant shows “Connected to Vision Controller” and the Action Request Client status changes to CONNECTED:

Action Request Client connected on the Deployment page

The robot now sends requests and moves to the localized objects. Check the path to the first object at low speed. If the robot stops too high or too low, correct the tool data or the object origin in LS.

NOTE: Be ready to stop the robot at any time. Use 10% speed for the first tests.

5 Version and brand ID

Robot module version

LS 1.5.0

Brand ID sent at connection

ABB/L/1.5.0XXXXXXXXXXXXX

Action Request Server port

11003

Supported controllers

IRC5, RobotWare 5.13 - 6.x

See Robot module support matrix for compatible LS versions.

6 Migration

Changes from LS 1.4 to LS 1.5 are listed in Migration from LS 1.4.x to LS 1.5.x. In short: Info data are now read by key, the new variable pho_nn_label was added and the example program PHO_LS_Comm_Check.mod is new.